<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Завантаження відео в Instagram</h1>
              <h2 class="sub c-fff f-18 fw400">
                Завантажуйте відео з Instagram, фотографії, ролики, історії та IGTV
                 Вміст онлайн
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/uk/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Завантажувач фотографій Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Введіть нижче URL-адресу ФОТО в Instagram
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/uk/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Завантажити Instagram Reels
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Введіть URL-адресу Instagram Reels нижче
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/uk/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Завантажити історію Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Введіть URL-адресу Instagram Stories нижче
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/uk/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Завантажте відео IGTV
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Введіть URL-адресу Instagram IGTV нижче
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Отримання даних, зачекайте кілька секунд!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Сайт не може обробити ваше посилання, оскільки воно приватне
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Введені дані не є посиланням, введіть дійсне посилання для
               приклад:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Усі функції Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta сумісна з усіма різновидами відео Instagram
               і посилання на зображення.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/uk">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Завантажувач відео Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta розроблено, щоб ви могли завантажувати власні
                   контент з Instagram. Він пропонує підтримку для завантаження обох
                   окремі та кілька відео з Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/uk/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Завантажувач фотографій Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Завантажувач фотографій Instagram від Savinginsta робить це легко
                   щоб зберегти будь-яку одну або декілька фотографій, включаючи колажі,
                   з Instagram. За допомогою цього інструменту завантаження окремої публікації
                   зображень або колекції фотографій Instagram є простим і
                   прямолінійний.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/uk/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Завантажити Instagram Reels</h4>
                  </div>
                </nuxt-link>
                <p>
                  Завантажувач Instagram Reels від Savinginsta дає вам змогу
                   без особливих зусиль завантажуйте відео Reels із дописів Instagram на
                   вашого пристрою, забезпечуючи просте рішення, де Instagram
                   сам по собі не підтримує цю функцію.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/uk/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>Завантажувач IGTV</h4>
                  </div>
                </nuxt-link>
                <p>
                  Історії Instagram пропонують користувачам унікальну платформу
                   ділитися своїм щоденним досвідом через фотографії та відео з a
                   широка аудиторія. Іноді ви можете зберегти улюблене
                   історія, але ця функція недоступна в додатку.
                   Savinginsta вирішує цю проблему, надаючи рішення, яке
                   дозволяє користувачам легко завантажувати та переглядати історії Instagram
                   офлайн, гарантуючи, що незабутній вміст ніколи не буде втрачено.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/uk/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Переглядач історій Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV пропонує розширені відео, а якщо ви не можете
                   переглянути їх негайно, у вас є можливість завантажити їх
                   Відео IGTV на ваш ПК. Це дозволяє зручно
                   перегляньте їх і насолоджуйтесь ними пізніше, навіть без Інтернету
                   підключення та усуває проблеми щодо вмісту IGTV
                   видаляються або недоступні.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Завантажте за допомогою програми Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Наша програма пропонує швидке та просте рішення для завантаження відео з Instagram, забезпечуючи відео високої якості без водяних знаків.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - КРАЩИЙ ІНСТРУМЕНТ ЗАВАНТАЖУВАННЯ INSTAGRAM
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta виділяється як найкращий завантажувач Instagram,
               майстерно створений для швидкого завантаження високоякісного вмісту
               Instagram. Коли шукаєте найефективніший спосіб завантаження
               Інстаграм медіа, завантажувач Savinginsta стає провідним
               рішення третьої сторони.
            </p>
            <p class="f-16 c-ccc">
              Instagram, відомий як найпопулярніший у світі додаток для обміну фотографіями,
               щодня завантажуються мільйони фотографій. Для таких
               моментів виникає необхідність у завантажувачі відео Instagram
               очевидний, забезпечуючи ідеальне рішення для ваших нагальних потреб.
               Цей інструмент необхідний кожному, хто хоче зберегти свої
               улюблений вміст Instagram ефективно.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Особливості Savinginsta Instagram video Downloader:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Завантажити відео з Instagram Швидко, легко та безпечно.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Ви можете вийти зі свого облікового запису Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Лише одним натисканням кнопки ви можете завантажити зображення Instagram
                   і відео.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Завантажте та збережіть зображення та відео в оригінальному форматі
                   визначення та якість.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  З особистих акаунтів завантажуйте та зберігайте відео в Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Висока швидкість: на даний момент Savinginsta пропонує найшвидший
                   швидкість завантаження.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Як використовувати Savinginsta Instagram Downloader для збереження з IG
              </h3>
              <div class="note c-ccc f-16">
                Примітка. Переконайтеся, що відео чи фотографія Instagram, які ви хочете
                 завантаження відбувається з публічного облікового запису.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Крок 01:</span>
                  <span class="f-16 c-000"
                    >Скопіюйте URL-адресу фотографій і відео Instagram</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">У додатку Instagram:</div>
                  <div class="c-000 f-16">
                    Для iOS: торкніться, щоб отримати URL-адресу фотографії в Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Для Android: натисніть над публікацією та виберіть «Копіювати
                     URL-адреса Instagram», а потім натисніть «Копіювати URL-адресу спільного доступу». Посилання буде
                     скопійовано в буфер обміну.
                  </div>
                  <div class="fw700 c-000 f-16">- На ПК/Mac:</div>
                  <div class="c-000 f-16">
                    Клацніть правою кнопкою миші дату відео або фотографії Instagram і
                     виберіть «Копіювати адресу посилання», щоб завантажити вміст Instagram
                     ваш робочий стіл.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Крок 02:</span>
                  <span class="f-16 c-000">
                    Вставте URL-адресу в Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Перейдіть до програми Savinginsta.App – спеціальної програми Instagram
                     завантажувач.
                  </div>
                  <div class="c-000 f-16">
                    Скопіюйте та вставте скопійовану URL-адресу у вказане текстове поле.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Крок 03:</span>
                  <span class="f-16 c-000">Розпочніть завантаження</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Натисніть кнопку «Завантажити», щоб почати відео в Instagram або
                     процес завантаження фото.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Важлива інформація про використання
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta призначена в основному для завантаження відео та
                     зображення з власного облікового запису Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Ми надаємо пріоритет конфіденційності користувачів і залишаємо за собою право відмовити
                     обслуговування, якщо наші інструменти використовуються для порушення прав інших
                     конфіденційності або доступу до несанкціонованого матеріалу.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Для повного розуміння нашої політики

              <a class="fw700 c-blue" href="/terms-of-service">
                будь ласка, прочитайте наші повні умови використання тут.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Інструменти</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/uk/instagram-story-download" 
                      >Завантажувач історій Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <nuxt-link to="/uk/instagram-reels-video-download" 
                      >Завантажувач Instagram Reels</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Підтримка</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> контакт </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">юридичний</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Умови використання
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Політика конфіденційності </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Ми не пов’язані з Instagram або Meta</b
            >
            <div class="c-ccc f-16">
                © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "uk",
    },
    bodyAttrs: {
      "data-lang": "uk",
    },
    title:
      "Instagram Downloader - завантажте відео Instagram онлайн - Savinginsta",
    meta: [
      { property: "og:locale", content: "uk" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: легко завантажуйте відео, ролики та фотографії з Instagram за допомогою нашого зручного інструменту. Зберігайте свої відео в Instagram швидко та безпечно на будь-якому пристрої.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - завантажте відео Instagram онлайн - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - завантажте відео Instagram онлайн - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/uk" },

      {
        property: "og:description",
        content:
          "Savinginsta: легко завантажуйте відео, ролики та фотографії з Instagram за допомогою нашого зручного інструменту. Зберігайте свої відео в Instagram швидко та безпечно на будь-якому пристрої.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/uk" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - завантажте відео Instagram онлайн - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: легко завантажуйте відео, ролики та фотографії з Instagram за допомогою нашого зручного інструменту. Зберігайте свої відео в Instagram швидко та безпечно на будь-якому пристрої.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/uk",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/uk",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - завантажте відео Instagram онлайн - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: легко завантажуйте відео, ролики та фотографії з Instagram за допомогою нашого зручного інструменту. Зберігайте свої відео в Instagram швидко та безпечно на будь-якому пристрої.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Що таке Instagram Video Downloader?`,
          content: `Instagram Video Downloader — це веб-інструмент, призначений для збереження фотографій, відео та вмісту IGTV для подальшого використання. Savinginsta є найкращим вибором для легкого завантаження вмісту з Instagram.`,
        },
        {
          title: `Чи потрібен вхід у мій обліковий запис Instagram для використання Savinginsta?`,
          content: `Ні, не потрібно входити в обліковий запис Instagram. Savinginsta забезпечує безпечне та анонімне завантаження з Instagram, не вимагаючи жодної особистої інформації.`,
        },
        {
          title: `Чи можу я безпосередньо зберегти відео з Instagram?`,
          content: `Безпосереднє завантаження відео з вашої стрічки Instagram або історій інших неможливе через сам Instagram. Однак Savinginsta пропонує просте рішення. Просто відвідайте їхній веб-сайт за адресою https://savinginsta.com і дотримуйтеся наданих простих інструкцій.`,
        },
        {
          title: `Служба завантаження відео та фотографій Instagram безкоштовна?`,
          content: `Так, Savinginsta надає цю послугу абсолютно безкоштовно, без обмежень на кількість завантажень.`,
        },
        {
          title: `Чи можу я завантажити вміст із приватних облікових записів Instagram?`,
          content: `Дійсно, Savinginsta дозволяє завантажувати відео, історії та фотографії з приватних облікових записів Instagram. Детальні інструкції доступні на їхній платформі.`,
        },
        {
          title: `Чи можна зберегти історії в Instagram?`,
          content: `Абсолютно. За допомогою Savinginsta ви можете переглядати та завантажувати будь-яку історію Instagram. Просто натисніть на три крапки (⁝) в історії, скопіюйте посилання та вставте його в Savinginsta, щоб розпочати завантаження.`,
        },
        {
          title: `Чи підтримує Savinginsta завантаження на комп’ютери?`,
          content: `Так, Savinginsta повністю сумісна з ПК, що дозволяє завантажувати відео з Instagram, фотографії, історії та інше безпосередньо на комп’ютер.`,
        },
        {
          title: `Чи можу я використовувати Savinginsta для завантаження з Instagram на пристрої Android?`,
          content: `Звичайно. Для користувачів Android просто скопіюйте посилання на публікацію в Instagram, вставте його в Savinginsta та збережіть. Щоб отримати додаткові відомості, відвідайте їхній посібник із завантаження з Instagram на Android.`,
        },
        {
          title: `Як я можу завантажити відео та фотографії Instagram на iPhone/iPad (iOS)?`,
          content: `Savinginsta розробила зручний, покроковий посібник із завантаження різних типів відео на ваш iPhone або iPad. Перейдіть за цим посиланням, щоб отримати інструкції: Завантажте відео з Instagram на iPhone.`,
        },
        {
          title: `Що робити, якщо відео в Instagram відтворюється, а не завантажується?`,
          content: `Щоб вирішити цю проблему, клацніть відео правою кнопкою миші та виберіть «Зберегти як...», щоб вибрати потрібне місце для збереження, а не клацайте лівою кнопкою миші.`,
        },
        {
          title: `Де зберігаються відео після завантаження?`,
          content: `Завантажені відео зазвичай зберігаються в папці «Завантаження» як на мобільних пристроях Android, так і на ПК.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
    
    //到达首页
    handleClick("guide_homepage_frist",{});
    handleClick("guide_homepage",{});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
 @import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
